package com.yl.message.service

import com.alibaba.fastjson.JSONObject
import com.yl.common.control.ResponseBody
import com.yl.message.common.MessageType
import com.yl.message.vo.ToUserMessageVo


interface ISendMessageService {

	/**
	 * 向企业用户发送消息的方法
	 * @param companyId     公司id，

	 * @param body          内容 按类型传  {
	 *                                  title:"",       //标题
	 *                                  content:"",     //内容
	 *                                  url:""          //跳转链接
	 *                              }
	 * @param successOnce  成功一次后,后续是否继续发送.默认:是
	 * @param userIds     用户id..多个
	 */
	fun sendMessageToCompanyUser(
		vo: ToUserMessageVo,
		method:(companyId:Long,userId:Long,name:String)->JSONObject?): ResponseBody

	fun sendMessageToCompanyUserHaveType(
		config: JSONObject,
		msgBody: JSONObject,
		messageType: MessageType,
		vararg userIds: Long
	): ResponseBody


	/**
	 * 向客户发送消息的方法
	 * @param body          内容 按类型传  {
	 *                                  title:"",       //标题
	 *                                  content:"",     //内容
	 *                                  url:""          //跳转链接
	 *                              }
	 * @param successOnce  成功一次后,后续是否继续发送.默认:是
	 * @param userIds     用户id..多个
	 */
	fun sendMessageToCustom(
		vo: ToUserMessageVo,
		method:(companyId:Long,userId:Long,name:String)->JSONObject?): ResponseBody

	/**
	 * 向后台管理员发送消息的方法
	 * @param body          内容 按类型传  {
	 *                                  title:"",       //标题
	 *                                  content:"",     //内容
	 *                                  url:""          //跳转链接
	 *                              }
	 * @param successOnce  成功一次后,后续是否继续发送.默认:是
	 * @param userIds     用户id..多个
	 */
	fun sendMessageToAdmin(vo: ToUserMessageVo
	): ResponseBody

}
